In various data storage applications, a host issues a sequence of memory commands for execution in a memory. Various techniques are known in the art for processing sequences of memory commands. Some techniques improve performance by modifying the order in which the commands are executed.
For example, U.S. Patent Application Publication 2009/0172263, whose disclosure is incorporated herein by reference, describes a storage controller connected to a Flash memory module. An execute loop in the storage controller is used to carry out tasks related to reading or writing data from the module. The loop includes reading a data structure from a queue and carrying out a task specified by the data structure, unless resources required by the task are not available, in which event the loop moves on to another data structure stored in another queue. Data structures bypassed by the loop are periodically revisited, until all tasks required are completed. Data structures store state information that is updated when tasks are completed.